<html>
    <head>
        <title>IAbpAppHostEnvironment主机运行环境接口</title>
    </head>
    <body>
        <script>
            // 六、IAbpHostEnvironment 虚拟主机 
                                /*
                                    有时候，在创建应用程序的同时，我们需要获取当前的"托管环境"并据此采取行动，
                                    在这种情况下，我们可以在最终的应用程序中使用一些服务，如IWebHostGEF或IWebAssemblyHostEnvironment. NET提供的。

                                    但是，我们不能在一个类库中使用这些服务，该类库由最终应用程序使用。
                                    ABP提供了IAbpHostEnvironment服务，它允许你随时获取当前环境名称。
                                    IAbpHostEnvironment被ABP在几个地方用于执行环境的特定操作，例如，ABP为某些服务减少了Development环境上的缓存持续时间。


                                    IAbpHostEnvironment按以下顺序获取当前"环境名称"：
                                                1、获取和设置在AbpApplicationCreationOptions中指定的环境名称。
                                                2、如果环境名称未在AbpApplicationCreationOptions中指定，
                                                    则尝试从ASP.NETCore&Blazor WASM应用程序的IWebHostEnvironment或IWebAssemblyHostEnvironment服务获取环境名称。
                                                3、如果未指定环境名称或无法从服务中获取环境名称，则将环境名称设置为生产。

                                    你可以在创建ABP应用程序时配置AbpApplicationCreationOptions 选项类，并为 Environment 属性设置环境名称。
                                    你可以在解决方案中这都要 AddApplication 或 AddApplicationAsync 调用，并设置 Environment 选项属性：
                                                await builder.AddApplicationAsync<MyConsoleDemoModule>(options =>{
                                                     options.Environment = Environments.Staging; //设置当前应用程序的运行环境。 
                                                });

                                    然后，无论何时需要获取当前环境名称或检查环境，都可以使用 IAbpHostEnvironment 接口：
                                                public class MyDemoService
                                                {
                                                    private readonly IAbpHostEnvironment _abpHostEnvironment;
                                                    
                                                    public MyDemoService(IAbpHostEnvironment abpHostEnvironment)
                                                    {
                                                        _abpHostEnvironment = abpHostEnvironment;
                                                    }

                                                    public void MyMethod()
                                                    {
                                                        var environmentName = _abpHostEnvironment.EnvironmentName;

                                                        if (_abpHostEnvironment.IsDevelopment()) {  } 

                                                        if (_abpHostEnvironment.IsStaging()) {  }

                                                        if (_abpHostEnvironment.IsProduction()) {  }

                                                        if (_abpHostEnvironment.IsEnvironment("custom-environment")) {  }
                                                    }
                                                }
                                */
        </script>
    </body>
</html>